#ifndef __POSICIONABLE_H__
#define __POSICIONABLE_H__

#include <iostream>

class Posicionable {

private:

	int posX;
	int posY;
	int direccion;
	int pasosPorCelda;
	int posYinicial;
	int posXinicial;

public:


	static const int VELOCIDAD_NORMAL = 2;
	static const int VELOCIDAD_RAPIDO = 4;
	static const int VELOCIDAD_LENTO = 1;
	static const int pasosPorCeldaDefault = 20;

	Posicionable(){
		direccion = 0;
		pasosPorCelda = pasosPorCeldaDefault;
	}

	Posicionable(int x, int y){
		direccion = 0;
		pasosPorCelda = pasosPorCeldaDefault;
		this->posX = x*pasosPorCelda;
		this->posY = y*pasosPorCelda;
		posXinicial = posX;
		posYinicial = posY;
	}

	void setPosicion(int x, int y){
		posX=x;
		posY=y;
	}
	
	void setPosInicialX(int x){
		posXinicial=x*pasosPorCelda;
		posX = posXinicial;
	}

	void setPosInicialY(int y){
		posYinicial=y*pasosPorCelda;
		posY = posYinicial;
	}

	int getPosX(){
		return posX;
	}

	int getPosY(){
		return posY;
	}

	void setPosX(int x){
		posX=x*pasosPorCelda;
	}
	void setPosY(int y){
		posY=y*pasosPorCelda;
	}

	int getPosXinicial(){
		return posXinicial;
	}

	int getPosYinicial(){
		return posYinicial;
	}

	void setValorDireccion(int d){
		this->direccion = d;
	}
	int getDireccion(){
		return direccion;
	}


	void setDireccion(int d){
		this->direccion= d;
	}


	void setPasosPorCelda(int p){
		this->pasosPorCelda = p;
	}

	int getPasosPorCelda(){
		return this->pasosPorCelda;
	}

};

#endif